perm filename DOC.LSP[NET,KMC] blob
sn#142407 filedate 1975-01-25 generic text, type T, neo UTF8
(DEFPROP FILEAREA
T
SPECIAL)
(DEFPROP INFILE
T
SPECIAL)
(DEFPROP OUTFILE
T
SPECIAL)
(DEFPROP MESSNO
T
SPECIAL)
(DEFPROP ERROR
(LAMBDA (L) (PRINT L))
EXPR)
(DEFPROP LPRINT
(LAMBDA (L) (MAPC (QUOTE PRINC) (REVERSE L)))
EXPR)
(DEFPROP SENDMESS
(LAMBDA (L)
(PROG (A CHAN)
(SETQ A (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE OUTPUT) FILEAREA OUTFILE))) NIL))
(COND ((NOT A) (ERROR (QUOTE "CANT SEND OUTPUT")) (EXIT)))
(OUTC CHAN NIL)
(SETQ MESSNO (ADD1 MESSNO))
(PRINT MESSNO)
(PRINT L)
(OUTC NIL T)))
EXPR)
(DEFPROP WAITONMESS
(LAMBDA (N FLAG)
(PROG (A)
(PROG (&V)
LOOP (COND ((NOT (SETQ A (MAILIN N)))
(SETQ &V (PROG NIL (COND (FLAG (PRINTSTR (QUOTE "WAITING...")))) (SLEEP 12))))
(T (RETURN &V)))
(GO LOOP))
(RETURN A)))
EXPR)
(DEFPROP MAILIN
(LAMBDA (N)
(PROG (A CHAN)
(SETQ A (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE INPUT) FILEAREA INFILE))) NIL))
(COND ((NOT A) (RETURN NIL)))
(INC CHAN NIL)
(SETQ A (READ))
(COND ((NOT (EQUAL A N)) (INC NIL T) (RETURN NIL)))
(SETQ A (READ))
(INC NIL T)
(RETURN A)))
EXPR)
(DEFPROP CHECKMAIL
(LAMBDA NIL
(PROG (A B C D CHAN)
(SETQ A (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE INPUT) FILEAREA INFILE))) NIL))
(COND ((NOT A) (ERROR (QUOTE "CANT RESTART -- FILE WAS DELETED"))))
(INC CHAN NIL)
(SETQ A (READ))
(SETQ B (READ))
(INC NIL T)
(SETQ C (ERRSET (SETQ CHAN (EVAL (LIST (QUOTE INPUT) FILEAREA OUTFILE))) NIL))
(COND ((NOT C) (ERROR (QUOTE "CANT RESTART -- FILE WAS DELETED"))))
(INC CHAN NIL)
(SETQ C (READ))
(SETQ D (READ))
(INC NIL T)
(RETURN (LIST A B C D))))
EXPR)
(DEFPROP SLEEP
(LAMBDA (N) (SLEEP2 N))
EXPR)
(DEFPROP SLEEP2
(LAMBDA (N)
(PROG (&V &L1 &UPPER1)
(SETQ &L1 1)
(SETQ &UPPER1 N)
LOOP (COND ((*GREAT &L1 &UPPER1) (GO EXIT)))
(SETQ I &L1)
(SETQ &L1 (ADD1 &L1))
(SETQ &V (PRINT I))
(GO LOOP)
EXIT (SETQ I NIL)
(RETURN &V)))
EXPR)
(DEFPROP RUN
(LAMBDA NIL
(PROG (A RESTART CH L)
(SETQ FILEAREA (QUOTE (NET KMC)))
(SETQ INFILE (QUOTE IN))
(SETQ OUTFILE (QUOTE OUT))
(SETQ MESSNO 0)
(PRINC (QUOTE "ARE YOU STARTING A CONVERSATION
OR RESTARTING AFTER A SYSTEM CRASH?[S OR R]"))
(SETQ RESTART (READ))
(SETQ RESTART (NOT (EQUAL RESTART (QUOTE S))))
(COND ((NOT RESTART)
(PROG NIL
(PRINTSTR
(QUOTE
"
IF THE SYSTEM GOES DOWN,
YOU MAY HAVE TO RETYPE YOUR LAST QUESTION.
WE WILL BE READY TO GO IN A MINUTE.
")) (SENDMESS (QUOTE (RRRRREADY)))
(SETQ A (WAITONMESS 1 T))
(COND ((NOT (EQUAL A (QUOTE (RRRRREADY)))) (ERROR (QUOTE "INITIALIZATION NO GOOD"))))
(PRINTSTR (QUOTE "
END INPUT WITH TWO ALTMODES.
")))) (T (PROG NIL
(SETQ L (CHECKMAIL))
(COND ((EQUAL (CAR L) (CADDR L))
(PRINTSTR (QUOTE "LAST INPUT: "))
(LPRINT (CADR L))
(SETQ RESTART NIL))
(T (PRINTSTR (QUOTE "LAST OUTPUT: "))
(LPRINT (CADDDR L))
(PRINTSTR (QUOTE "WAITING..."))))
(SETQ MESSNO (CADDR L)))))
(PROG (&V)
LOOP (COND (T (SETQ &V
(PROG NIL
(TERPRI (TERPRI NIL))
(SETQ L NIL)
(COND
((NOT RESTART)
(PROG NIL
(PRINTSTR (QUOTE "READY:"))
(PROG NIL
LOOP (COND
((NOT
(AND (NOT (EQ (SETQ CH (READCH)) CR))
(NOT (EQ CH LF))
(NOT (EQ CH ALTMODE))))
(GO LOOP))))
(TERPRI
(PROG (&V)
LOOP (SETQ &V (SETQ L (CONS CH L)))
(COND
((AND (EQ (SETQ CH (READCH)) ALTMODE)
(EQ (SETQ CH (READCH)) ALTMODE))
(RETURN &V))
(T (GO LOOP)))))
(SENDMESS L))))
(SETQ RESTART NIL)
(SETQ L (WAITONMESS MESSNO NIL))
(TERPRI NIL)
(LPRINT L))))
(T (RETURN &V)))
(GO LOOP))))
EXPR)
(DEFPROP RESTART
(LAMBDA NIL (PROG (FILEAREA INFILE OUTFILE) (RUN)))
EXPR)